/**
 *  Dog全局函数对象   var dog = new $.dog();
 */
$.extend({
    dog: function () {
    },
    constant: function () { //常量池
        return {
            ///-------文件常量----------
            MAX_FILES: 10,//一次队列最大文件数
        }
    }
});


/**
 * 全局get函数
 *
 * @param options   参数
 */
$.dog.prototype.get = function (options) {
    axios.get(options.url, { params: options.data || {}
    }).then(function (response) {
        options.success && options.success(response.data)
    }).catch(function (error) {
        options.error && options.error(error)
    });
};

/**
 * 全局post函数
 *
 * @param options   参数
 */
$.dog.prototype.post = function (options) {
    var self = this;
    axios.post(options.url, options.data || {}) .then(function (response) {
        options.success && options.success(response.data);
    }).catch(function (error) {
        options.error && options.error(error)
    });
};

/**
 * 成功弹框
 * @param options
 */
$.dog.prototype.alertOk = function (options) {
    options = options.length ? { text: options } : (options || {});
    options.title = options.title || '操作成功';
    options.text = options.text;
    options.showCancelButton = false;
    options.showCloseButton = false;
    options.type = 'success';
    this.alertBox(options);
};

/**
 * 弹出成功，并在500毫秒后刷新页面
 * @param text
 */
$.dog.prototype.alertOkAndReload = function (text) {
    this.alertOk({
        text: text, then: function () {
            setTimeout(function () {
                window.location.reload();
            }, 700);
        }
    });
};

/**
 * 警告弹框
 * @param options
 */
$.dog.prototype.alertWarn = function (options) {
    options = options.length ? { text: options } : (options || {});
    options.title = options.title || '警告信息';
    options.text = options.text;
    options.timer = 3000;
    options.type = 'warning';
    this.alertBox(options);
};

/**
 * 询问确认弹框，这里会传入then函数进来
 * @param options
 */
$.dog.prototype.alertConfirm = function (options) {
    options = options || {};
    options.title = options.title || '确定要删除吗？';
    options.text = options.text;
    options.showCancelButton = true;
    options.type = 'question';
    this.alertBox(options);
};

/**
 * 错误提示
 * @param options
 */
$.dog.prototype.alertError = function (options) {
    options = options.length ? { text: options } : (options || {});
    options.title = options.title || '错误信息';
    options.text = options.text;
    options.type = 'error';
    this.alertBox(options);
};

/**
 * 公共弹框
 * @param options
 */
$.dog.prototype.alertBox = function (options) {
    swal({
        title: options.title,
        text: options.text,
        type: options.type,
        timer: options.timer || 9999,
        showCloseButton: options.showCloseButton,
        showCancelButton: options.showCancelButton,
        showLoaderOnConfirm: options.showLoaderOnConfirm || false,
        confirmButtonColor: options.confirmButtonColor || '#3085d6',
        cancelButtonColor: options.cancelButtonColor || '#d33',
        confirmButtonText: options.confirmButtonText || '确定',
        cancelButtonText: options.cancelButtonText || '取消'
    }).then(function (e) {
        options.then && options.then(e);
    }).catch(swal.noop);
};

/**
 * 日期格式化
 * @param {*} fmt 
 * @param {*} date 
 * @returns 
 */
$.dog.prototype.dateFormat = function (fmt, date) {
    const opt = {
        "Y+": date.getFullYear().toString(),        // 年
        "m+": (date.getMonth() + 1).toString(),     // 月
        "d+": date.getDate().toString(),            // 日
        "H+": date.getHours().toString(),           // 时
        "M+": date.getMinutes().toString(),         // 分
        "S+": date.getSeconds().toString()          // 秒
    };

    let ret;
    for (let k in opt) {
        ret = new RegExp("(" + k + ")").exec(fmt);
        if (ret) {
            fmt = fmt.replace(ret[1], (ret[1].length == 1) ? (opt[k]) : (opt[k].padStart(ret[1].length, "0")));
        };
    };
    return fmt;
}

/**
 * 获取补0随机数
 * @param {*} count 
 * @param {*} num 
 */
$.dog.prototype.random = function (count, num) {
    let idx = Math.floor(Math.random() * count) + 1;
    return (Array(num).join(0) + idx).slice(-num);
}

/**
 * 检测URL
 * @param {*} url 
 * @returns 
 */
$.dog.prototype.checkURL = function(url){
    let exp =new RegExp(/http(s)?:\/\/([\w-]+\.)+[\w-]+(\/[\w- .\/?%&=]*)?/);
    return exp.test(url)
}